package com.szh.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.szh.domain.OrderInfo;
import com.szh.enums.OrderStatus;

import java.util.List;

public interface OrderInfoService extends IService<OrderInfo> {

    /**
     * 根据订单号查询订单状态
     * @param orderNo 订单号
     * @return 订单状态
     */
    String queryOrderStatus(String orderNo);

    /**
     * 根据商品id生成订单
     * @param productId 商品id
     * @param paymentType 支付类型
     * @return OrderInfo
     */
    OrderInfo createOrderByProductId(Long productId, String paymentType);

    /**
     * 根据订单号获取订单
     */
    OrderInfo getOrderByOrderNo(String outTradeNo);

    /**
     * 根据订单号更新订单状态，支付成功之后，更新订单状态为支付成功
     * @param orderNo 订单号
     * @param orderStatus 订单状态
     */
    void updateStatusByOrderNo(String orderNo, OrderStatus orderStatus);

    /**
     * 查询创建超过minutes分钟、并且未支付的订单
     * @param minutes 分钟
     * @param paymentType 支付类型
     * @return orderInfoList
     */
    List<OrderInfo> getNoPayOrderByDuration(int minutes, String paymentType);

    /**
     * 查询订单列表，按照创建时间倒序
     * @return List<OrderInfo>
     */
    List<OrderInfo> listOrderByCreateTimeDesc();

    /**
     * 存储订单支付二维码
     * @param orderNo 订单号
     * @param codeUrl 二维码链接
     */
    void saveCodeUrl(String orderNo, String codeUrl);
}
